<?php

namespace App\Http\Controllers\Admin;

use DB;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Member;
use Cache;
use Arr;
use Schema;
use Str;
use App\Models\Article;

class TestController extends Controller
{
   //
   // public function show(){
   //     //加载文件
   //     return view('show');
   // }
   // public function show(){

   //     // return view('show')->with('content','<b>加粗</b>');
   //     // return view('show')->with('time',time());
   //     // $data =[['id'=> 1, 'name'=>'Tom'],['id'=>2,'name'=>'Andy']];
   //     // return view('show',['data'=> $data]);
   //     $week = date('N');
   //     return view('show' ,['week'=>$week]);
   // }
   // public function show(){

   //    return view('child');
   // }
   // public function form(){

   //     return view('form');
   //  }
   // public function transfer(){

   //     return '转账成功';
   //  }
   public function profile()
   {

      return view('profile');
   }
   public function store(Request $request)
   {
      //添加验证规则
      $validatedData = $request->validate([
         'name' => 'required|string|bail|max:255',
         'email' => 'required|email',
         'age' => 'required|integer',
         'hobby' => 'required',
      ]);
   }
   public function testSession()
   {
      session(['name' => '张三']);
      dump(session('name'));
      dump(session('age', 0));
      dump(session()->all());
      dump(session()->forget('name'));
      dump(session()->has('name'));
      session()->flush();
   }

   public function database()
   {
      $data = DB::table('abc')->get();
      foreach ($data as $v) {
         dump($v->id . '-' . $v->name);
      }

      // $data = [
      //    ['name' => 'tom',
      //    'age' => 22,
      //    'email'=> 'tom@laravel.test'],
      //    ['name' => 'jim',
      //    'age' => 23,
      //    'email'=> 'jim@laravel.test'],
      //    ['name' => 'tim',
      //    'age' => 24,
      //    'email'=> 'tim@laravel.test'],
      // ];
      // dump(DB::table('abc')->insert($data));
      // dump(DB::table('abc')->insertGetId($data));
      // $data =['name'=>'tom'];

      //    $data =['name' => 'adler',
      //        'age' => 60,
      //       'email'=> 'adler@laravel.test'];
      //    DB::table('abc')->where(['id'=>4])->orWhere(['name'=>'tom'])->update($data);   
      //   }

      //      $data =['name' => 'adler3',
//      'age' => 60,
//     'email'=> 'adler3@laravel.test'];
//  DB::table('abc')->where(['id'=>1])->orWhere(['name'=>'adler1'])->update($data);   
//  $data = [
//          ['name' => 'tom',
//          'age' => 2,
//          'email'=> 'tom@laravel.test'],
//          ['name' => 'jim',
//          'age' => 3,
//          'email'=> 'jim@laravel.test'],
//          ['name' => 'tim',
//          'age' => 4,
//          'email'=> 'tim@laravel.test'],
//       ];
//       dump(DB::table('abc')->insert($data));
      // $data=DB::table('abc')->where('id','<=',4)->get();
      // foreach($data as $v){
      //    echo $v->id . '-' . $v->name . '-' .$v->age . '<br>';
      // }
      // dump($data);
      // $data=DB::table('abc')->get(['name','email']);
      // dump($data);
      //   $data=DB::table('abc')->first(['name','email']);
      //  dump($data);
      //  $data=DB::table('abc')->select('name as username')->get();
      //  dump($data);
      // $data=DB::table('abc')->select(DB::raw('name,age'))->get();
      //  dump($data);

      // $name=DB::table('abc')->where('id',1)->value('name'); 查询字段
      // dump($name);
      // $data=DB::table('abc')->orderBy('age','desc')->get();  排序
      // dump($data);
      // $data=DB::table('abc')->limit(3)->offset(2)->get(); 分页
      // dump($data);

      // $res=DB::table('abc')->where('id',4)->delete();
      // dump($res);
      // DB::table('abc')->truncate();

      // $data=DB::select('SELECT * FROM `abc`');
      // dump($data);
      // DB::insert('INSERT INTO `abc` SET `name`=\'tom\'');
      // DB::update('UPDATE `abc` SET `age`=20 WHERE `name`=\'tom\'');
      // DB::delete('DELETE FROM `abc` WHERE `name`=\'tom\'');
      // DB::statement('CREATE TABLE `test`(`id` INT)');
      $data = DB::table('article AS t1')->select(
         't1.id',
         't1.article_name AS article_name',
         't2.author_name AS author_name'
      )->leftJoin(
            'author AS t2',
            't1.author_id',
            '=',
            't2.id'
         )->get();
      foreach ($data as $v) {
         echo $v->id . '-' . $v->article_name . '-' . $v->author_name;
      }
   }
   public function member()
   {
      $member = new Member();
      $member->name = 'save';
      $member->age = '20';
      $member->email = 'save@abc.test';
      dump($member->save());
      dump($member->id);
   }
   // public function test(){
   //    $data = \App\Article::all();
   //    foreach($data as $key => $value){
   //       echo '文章id:' . $value->id . '<br>';
   //       echo '文章名称:' . $value->article_name . '<br>';
   //       echo '作者名称:' . $value->author->author_name;
   //    }
   // }
   //一对多
   // public function test(){
   //    $data = \App\Author::all();
   //    foreach($data as $key => $value){
   //       echo '作者名称:' . $value->author_name . '<br>';
   //       foreach ($value->article as $k => $v){
   //          echo $v->article_name . '<br>';
   //       }
   //    }
   // }
   // 多对一
   // public function test()
   // {
   //    $data = \App\Article::all();
   //    foreach ($data as $key => $value) {
   //       echo '文章id:' . $value->id . '<br>';
   //       echo '文章名称:' . $value->article_name . '<br>';
   //       echo '作者名称:' . $value->author->author_name .'<br>';
   //    }
   // }
//文章模型查询关键词
   // public function test()
   // {
   //    $data = \App\Article::all();
   //    foreach ($data as $key => $value) {
   //       echo '文章名称:' . $value->article_name . '<br>';
   //       echo '关键词:';
   //       foreach ($value->keyword as $k => $v){
   //          echo $v->keyword . '';
   //       }
   //       echo '<hr>';
   //    }
   // }
//关键词模型查询文章
   // public function test()
   // {
   //    $data = \App\Keyword::all();
   //    foreach ($data as $key => $value) {
   //       echo '关键词:' . $value->keyword . '<br>';
   //       echo '相关文章:';
   //       foreach ($value->article as $k => $v){
   //          echo $v->article_name . '';
   //       }
   //       echo '<hr>';
   //    }
   // }

   //文件上传
   // public function avatar(){
   //    return view('avatar');
   // }
   // public function up(Request $request){
   //    if($request->hasFile('avatar')){
   //       $avatar = $request->file('avatar');
   //       if($avatar->isValid()){
   //          $name=md5(microtime(true)) . '.' . $avatar->extension();
   //          $avatar ->move('static/upload', $name);
   //          $path='/static/upload/' . $name;
   //          return '<a href=" ' . $path .' " >查看文件</a>';
   //       }
   //       return $avatar->getErrorMessage();
   //    }
   //    return '文件上传失败';
   // }

   // //数据分页
   public function user(){
      $data = Member::paginate(2);
      return view('user',compact('data'));
   }

   //验证码
   public function captcha(){
      return view('captcha');
   }
   public function checkCaptcha(Request $request){
      $this->validate($request,[
         'captcha'=>'required|captcha'
      ],[
         'captcha.captcha'=>'验证码错误'
      ]);
      // return '验证成功';
      return redirect('test/user');
   }

   public function cache(){
      // Cache::put('name','张三');
      // Cache::put('name','李四',60);
      // dump($value);
      // Cache::add('age',80);

   // if(Cache::has('age')){
   //    dump('存在');
   // }else{
   //    dump('不存在');
   // }
   // $value=Cache::get('name');
   // dump($value);

   // Cache::pull('name');
   // Cache::forget('age');
   // Cache::flush();
   Cache::add('count',0,100);
   Cache::increment('count');
   return '你是第' . Cache::get('count') . '位访客';
   }

   //数组函数
   public function testArr(){
      // $array= Arr::add(['name'=>'Tom'],'age',18);
      // dump(Arr::get($array,'name'));
      // dump(Arr::get($array,'gender','male'));
      // $array=Arr::except($array,['name']);
      // dump(Arr::get($array,'name'));
//数组排序
      // $array=['Dask','Table','Chair'];
      // $sorted=Arr::sort($array);
      // dump($sorted);
      // $num=[100,200,300];
      // $numsorted=Arr::sort($num);
      // dump($numsorted);

      $array=[
         ['Roman','Taylor','Li'],
         ['PHP','React','JavaScript'],
         ['one'=>1,'two'=>2,'three'=>3],
      ];
      $sorted=Arr::sortRecursive($array);
      dump($sorted);
   }

   //字符串函数
   public function testStr()
   {
      dump(Str::camel('foo_bar'));
      dump(Str::kebab('fooBar'));
      dump(Str::snake('fooBar'));
      $matches=Str::is('foo*','foobar');
      $matchess=Str::is('foo*','barbar');
      dump($matches);
      dump($matchess);
   }

   //URL函数
   public function testURL()
   {
      $url=action('Admin\TestController@testStr');
      // $url1=action('Admin\TestController@from',['id'=>1]);
      // $url2=route('Hello');
      // $url3=assert('img/photo.jpg');
      dump($url);
      // dump($url1);
      // dump($url2);
      // dump($url3);

      $path=app_path();
      dump($path);
      dump(base_path());
   }

   //XML
   public function xmldata(){
      $xml = new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?> <booklist></booklist>');
      $book=$xml->addChild('book');
      $book->addChild('name','Laravel');
      $book->addChild('author','黑马程序员');
      $content=$xml->asXML();
      return response($content)->header('Content-Type','text/xml');
   }

   public function xml(){
      return view('xml');
   }

//JSON
   public function jsondata(){
      $data=[['name'=>'Tom','age'=>20],['name'=>'Jim','age'=>21]];
      return response()->json($data);
   }

   public function json(){
      return view('json');
   }

   public function index(){
      return Article::all();
   }

   public function show($id){
      return Article::where('id',$id)->first();
   }
}
